evaluating polynomial functions